home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
archiver
/
compress.zoo
/
compress.h
< prev
next >
Wrap
C/C++ Source or Header
|
1989-06-30
|
27KB
|
800 lines
/*@H************************ < COMPRESS HEADER > ****************************
* $@(#) compress.c,v 4.3 88/12/26 08:00:00 don Release ^ *
* *
* compress : compress.h <global defines, etc> *
* *
* port by : Donald J. Gloistein *
* *
* Source, Documentation, Object Code: *
* released to Public Domain. This code is based on code as documented *
* below in release notes. *
* *
*--------------------------- Module Description --------------------------*
* THIS HEADER CONTAINS MUCH IMPLEMENTATION INFORMATION AND ASSUMPTIONS *
* PLEASE PRINT IT OUT AND READ IT BEFORE COMPILING CODE FOR YOURSELF *
* *
* This header supports a number of compiler defines and predefines. *
* Rather than explain all of them, please print the header and read the *
* notes. Also the unix and xenix makefiles are commented for the *
* various options. There continues to have a lot of Dos specific info in *
* the header. This is to help on 16 bit Msdos machines to get their *
* compiler to work properly. I make no appology for that, as this port *
* began as a way to implement 16 bit compress on a segmented MsDos machine*
* *
* However, for Unix and Xenix, all you should have to define is -DXENIX *
* or -DUNIX and compile. There may be a problem with whether your library *
* supports alloc() or malloc(), but there is a define for that, also. *
* *
* This header can be maintained to keep up with the different compilers *
* and systems. As distributed in don Release, the files will compile with *
* no changes under Microsoft version 5.1 C compiler, and Xenix C compiler *
* which is the Microsoft version 4 ported. If you are going to bind the *
* code for use in MsDos and OS/2 machines, then you must uncomment the *
* #define BIND in this header. Otherwise, this distribution of source *
* detect Msdos and Xenix predefines from the compiler and adjust. *
* *
*--------------------------- Implementation Notes --------------------------*
* *
* compiled with : compress.fns *
*
* NOTE!!! Defaults of this code now are completely Unix, even for the *
* msdos ports. That means that the program works as a filter, *
* and will just sit there waiting for input from stdin if you *
* issue just the command name. You must use -h or -? to get the *
* full help screen now. Also, it will unlink (kill) as a default *
* on successful compression and decompression. That means the *
* source file will be erased. *
* These defaults are changed with the FILTER and KEEPFLAG *
* defines. *
* *
* NOTE!!! Compiler predefines were taken out of the compress.h header. *
* You must either specify them on compile or uncomment the *
* compiler define in this header. Compiling without doing these *
* will result in a program that does unspecified actions. *
* problems: *
* The inpath and outpath is a bit kludged. It should work okay. *
* Let me know if you have problems, especially under Unix. *
* *
* CAUTION: The bound version will run on Dos 2.x, but you must use the *
* name compress.exe. If you rename the file, it will not run *
* The unbound version will run on Dos 2.x with the name changed *
* but due to the dos version, will not detect its own name. *
* *
* CAUTION: Non MsDos users. You must modify the _MAX_PATH defines for *
* your operating system if it is different from the assumed *
* standard. *
* *
* CAUTION: I have used a number of defines to make it possible to compile *
* properly under a number of bit sizes and adjust for the memory *
* allocation scheme needed. If you do not use a dos system, *
* PLEASE pay attention to the defines for MAXSEG_64 and the one *
* called SMALLMODEL. The SMALLMODEL define is set in the header *
* but if you don't have a compiler that triggers the MAXSEG_64 *
* define, you may end up with bad pointers. Becareful. *
* *
* Header for files using version 4 compress routines define MAIN *
* in the file with defining instance of the global variables. *
* There are a number of compilers for MsDos and Unix/Xenix. *
* So the user must define the actions required. *
* *
* *
* Defines: This header file contains most of the system wide defines. *
* the purpose for this was to consolodate compiler differences *
* into one area that is easily changed. *
* *
* define MAXBITS= if you want a different maximum bits. 16 bits will now *
* run in about 400K of memory. *
* define BIND if you are going to use Microsoft bind.exe program on the *
* executable. *
* *
* define MSDOS if you are compiling under MsDos or PcDos and your compiler*
* does not predefine it. *
* *
* Initials ---- Name --------------------------------- *
* DjG Donald J. Gloistein, current port to MsDos 16 bit *
* Plus many others, see rev.hst file for full list *
* LvR Lyle V. Rains, many thanks for improved implementation *
* of the compression and decompression routines. *
*************************************************************************@H*/
#ifndef FALSE /* let's get some sense to this */
#define FALSE 0
#define TRUE !FALSE
#endif
#ifdef UNIX
#define NPROTO
#define COMP40 /* take this out for a little more speed */
#ifdef ALLOC
char *alloc();
#define ALLOCATE(x,y) alloc((unsigned int)x*y)
#else
char *malloc();
#define ALLOCATE(x,y) malloc((unsigned int)x*y)
#endif
#define FREEIT(ptr) free(ptr)
#define setbinary(fp)
#define NO_SETVBUF /* most don't support setvbuf() function */
#endif
/* NOTE: This program will not work on the */
/* IBM/PC version of MINIX due to the small */
/* memory model restrictions.